package com.nbst.dao.mapper.mes;

import java.util.List;
import java.util.Map;

import com.nbst.dao.base.mapper.BaseMapper;
import com.nbst.model.mes.EndWork;
import com.nbst.model.mes.StartWork;
import com.nbst.model.mes.WorkTz;

public interface StartWorkMapper extends BaseMapper<StartWork> {
	int findByWorkerCount(String fWorker);

	/**
	 * 根据条件查询员工报工台账
	 * 
	 * @param map
	 * @return List<Map<String,Object>>
	 * @author King
	 * @date 2019年1月29日
	 */
	List<WorkTz> workTZList(Map<String, Object> map);

	/**
	 * 待质检列表 fSjFlag = 1 待首检标志 fXjFlag = 1待巡检标志 fCjFlag = 1 待抽检标志
	 * 
	 * @param map
	 * @return List<Map<String,Object>>
	 * @author King
	 * @date 2019年4月28日
	 */
	List<Map<String, Object>> fPendingQcList(Map<String, Object> map);

	/**
	 * 查询指定派工单中不包含指定开工单的开工数量
	 * 
	 * @param map
	 *            fDisPathId 派工单id ,id开工单id
	 * @return Integer
	 * @author King
	 * @date 2019年5月20日
	 */
	Integer disPatchCount(Map<String, Object> map);

	/**
	 * 根据流转卡id查询还未完工的开工记录id
	 * 
	 * @param fCardId
	 * @return Integer
	 * @author King
	 * @date 2019年6月10日
	 */
	Integer getNoEndWorkStartId(Integer fCardId);

	/**
	 * 新增自动报工的错误信息
	 * 
	 * @param map
	 * @return Integer
	 * @author King
	 * @date 2019年6月13日
	 */
	Integer addNewAutoEndWorkErrorMsg(Map<String, Object> map);

	/**
	 * 根据辅助开工id删除合并工序的非代表工序的开工记录
	 * 
	 * @param fAuxStartWorkId
	 * @return
	 */
	Integer deleteMergeAuxStartWork(Integer fAuxStartWorkId);

	/**
	 * 根据派工单id查询该派工单是否有已开工但未完工的记录
	 * 
	 * @param fDisPatchId
	 * @return
	 */
	Integer findByDispatchStartWorkCount(Integer fDisPatchId);

	/**
	 * 根据开工单id查询开工单信息
	 * 
	 * @param id
	 * @return StartWork
	 * @author King
	 * @date 2019年6月18日
	 */
	StartWork findById(Integer id);

	/**
	 * 根据开工单id查询派工单号
	 * 
	 * @param id
	 * @return String
	 * @author King
	 * @date 2019年7月11日
	 */
	String getDispatchCode(Integer id);

	/**
	 * 根据派工单ID查询是否已经开工
	 * 
	 * @param map
	 * @return
	 */
	Integer getStartWorkNumByDisPatchId(Map<String, Object> map);

	/**
	 * 根据物料申请单ID查询是否已经开工
	 * 
	 * @param applyId
	 * @return
	 */
	Integer getStartWorkNumByApplyId(Integer applyId);

	/**
	 * 根据设备id查询未完工的开工记录
	 * 
	 * @param fMacId
	 * @return int
	 * @author King
	 * @date 2019年7月29日
	 */
	int getNotOverStartWork(String fMacId);

	/**
	 * 根据设备内码查询未完工的派工单号
	 * 
	 * @param fMacId
	 * @return String
	 * @author King
	 * @date 2019年7月29日
	 */
	List<String> getNotOverStartWorkDispatchCode(String fMacId);

	List<Map<String, Object>> findMachineTimesInfo(String macId);

	/**
	 * 根据开工单id查询合并开工单还有哪些未首检的
	 * 
	 * @param id
	 * @return Integer
	 * @author King
	 * @date 2019年12月16日
	 */
	Integer countNotFirstQcCount(Integer id);

	/**
	 * 根据开工单id获取与该开工相关的全部开工信息
	 * 
	 * @param fStartWorkId
	 *            开工单id
	 * @return List<StartWork>
	 * @author King
	 * @date 2020年3月6日
	 */
	List<StartWork> getAllStartWorkInfo(Integer fStartWorkId);

	List<StartWork> startWorkList(Map<String, Object> map);

	/**
	 * 根据派工单号查询还未完工的开工单
	 * 
	 * @param fCode
	 * @return Integer
	 * @author King
	 * @date 2020年4月13日
	 */
	Integer getNoEndWorkByCode(String fCode);

	/**
	 * 根据完工单id关闭开工单
	 * 
	 * @param endWorkId
	 *            完工单id
	 * @return Integer
	 * @author King
	 * @date 2020年5月12日
	 */
	Integer cloudByEndWorkId(Integer endWorkId);

	/**
	 * 根据派工单id关闭开工单
	 * 
	 * @param fDispatchId
	 *            派工单id
	 * @return Integer
	 * @author King
	 * @date 2020年5月20日
	 */
	Integer cloudByDispatchId(Integer fDispatchId);

	/**
	 * 同步Card表中的定额到开工表中
	 * 
	 * @return int
	 * @author King
	 * @date 2020年6月17日
	 */
	int syncPieceRate();

	/**
	 * 根据任务单id关闭未完成的开工单
	 * 
	 * @param fIcmoId
	 *            任务单id
	 * @return int
	 * @author King
	 * @date 2020年8月22日
	 */

	int closedStartWorkByIcmoId(Integer fIcmoId);

	/**
	 * 根据开工单id获取待完工记录
	 * 
	 * @param fStartWorkId
	 * @return List<EndWork>
	 * @author King
	 * @date 2020年8月22日
	 */
	List<EndWork> findByMergeOper(Integer fStartWorkId);

	/**
	 * 根据派工单id获取该派工单已开工的记录条数
	 * 
	 * @param id
	 * @return int
	 * @author King
	 * @date 2020年8月24日
	 */
	int getStartWorkDispatchCount(Integer id);

}